package com.heisenhub.common.db.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.heisenhub.common.db.model.IsDel;
import com.heisnenhub.common.module.entity.IBaseEntity;
import com.heisnenhub.common.module.entity.PageQuery;

import java.io.Serializable;

/**
 * @author sen
 * @description  service 增强
 * @date 2024/1/8 15:57
 */


public interface ISuperService<T extends IsDel, Q extends PageQuery> extends IService<T> {


    /**
     *  软删除
     * @param id  id
     * @return
     */
     boolean delById(Serializable id);

    /**
     *  通过id查询 没有软删除的对象
     * @param id
     * @return
     */
    T findById(Serializable id);

    /**
     *  通过id查询 没有软删除的对象  没有就报错
     * @param id
     * @return
     */
    T findByIdThrow(Serializable id);

    /**
     * 分页  需要在对应的 mapper。xml中文件写 doPage的sql
     * @param pageQuery
     * @return
     */
    IPage<T> doPage(Q pageQuery);


}
